//package com.example.springai.langchat;
//
//import dev.langchain4j.agent.tool.ToolSpecification;
//import dev.langchain4j.data.message.AiMessage;
//import dev.langchain4j.data.message.ChatMessage;
//import dev.langchain4j.data.message.UserMessage;
//
//import dev.langchain4j.model.chat.request.ChatRequest;
//import dev.langchain4j.model.chat.response.ChatResponse;
//import dev.langchain4j.model.openai.OpenAiChatModel;
//import dev.langchain4j.model.output.Response;
//
//
//import java.util.Collections;
//import java.util.List;
//
//public class SiliconFlowChatExample {
//    private static final String API_KEY = "sk-nrvjihoykgbjabnelziszukgkcankraqcwtvohvpcuepuyyz";
//    private static final String BASE_URL = "https://api.siliconflow.com/v1";
//
//    public static void main(String[] args) {
//        // 配置 SiliconFlow 的 OpenAI 兼容模型
//        OpenAiChatModel model = OpenAiChatModel.builder()
//                .baseUrl(BASE_URL)
//                .apiKey(API_KEY)
//                .modelName("default-chat-model") // 替换为 SiliconFlow 的实际模型名
//                .build();
//
//        // 构造 ChatRequest
////        ChatRequest request = new ChatRequest();
//        ChatRequest request = ChatRequest.builder().messages(Collections.singletonList(new UserMessage("你好，请告诉我今天是星期几？"))).build();
//
//        // 可选：设置工具或响应格式
//        // request.setToolSpecifications(...);
//        // request.setResponseFormat(...);
//
//        // 调用 chat 方法
//        ChatResponse response = invokeChat(model, request);
//
//        // 输出结果
//        System.out.println("AI 响应: " + response.aiMessage().text());
//        System.out.println("令牌使用情况: " + response.tokenUsage());
//        System.out.println("结束原因: " + response.finishReason());
//    }
//
//    // 封装 chat 调用（因为 chat 是 protected 方法，这里通过反射或子类访问）
//    private static ChatResponse invokeChat(OpenAiChatModel model, ChatRequest request) {
//        try {
//            // 使用反射调用 protected 方法（仅演示，实际建议通过 generate）
//            java.lang.reflect.Method chatMethod = OpenAiChatModel.class.getDeclaredMethod("chat", ChatRequest.class);
//            chatMethod.setAccessible(true);
//
//            return (ChatResponse) chatMethod.invoke(model, request);
//        } catch (Exception e) {
//            List<ChatMessage> messages = request.messages();
//            List<ToolSpecification> toolSpecifications = request.toolSpecifications();
//
//            // 更推荐的方式：直接调用 generate（公开方法）
//            Response<AiMessage> response;
//            response = model.generate(
//                    messages,
//                    toolSpecifications
//                    // 默认响应格式
//            );
//            return ChatResponse.builder()
//                    .aiMessage(response.content())
//                    .tokenUsage(response.tokenUsage())
//                    .finishReason(response.finishReason())
//                    .build();
//        }
//    }
//}